UNPKG

@rsc-labs/medusa-store-analytics

Version:
55 lines (54 loc) 3.58 kB
"use strict"; /* * Copyright 2024 RSC-Labs, https://rsoftcon.com/ * * MIT License * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.GET = void 0; const medusa_1 = require("@medusajs/medusa"); const utils_1 = require("@medusajs/utils"); const GET = async (req, res) => { const kind = req.params.kind; const dateRangeFrom = req.query.dateRangeFrom; const dateRangeTo = req.query.dateRangeTo; const dateRangeFromCompareTo = req.query.dateRangeFromCompareTo; const dateRangeToCompareTo = req.query.dateRangeToCompareTo; const orderStatusesFromQuery = req.query.orderStatuses; const orderStatuses = orderStatusesFromQuery !== undefined ? orderStatusesFromQuery.map(status => medusa_1.OrderStatus[status.toUpperCase()]).filter(orderStatus => orderStatus !== undefined) : []; let result; const customersAnalyticsService = req.scope.resolve('customersAnalyticsService'); try { switch (kind) { case 'history': result = await customersAnalyticsService.getHistory(dateRangeFrom ? new Date(Number(dateRangeFrom)) : undefined, dateRangeTo ? new Date(Number(dateRangeTo)) : undefined, dateRangeFromCompareTo ? new Date(Number(dateRangeFromCompareTo)) : undefined, dateRangeToCompareTo ? new Date(Number(dateRangeToCompareTo)) : undefined); break; case 'cumulative-history': result = await customersAnalyticsService.getCumulativeHistory(dateRangeFrom ? new Date(Number(dateRangeFrom)) : undefined, dateRangeTo ? new Date(Number(dateRangeTo)) : undefined, dateRangeFromCompareTo ? new Date(Number(dateRangeFromCompareTo)) : undefined, dateRangeToCompareTo ? new Date(Number(dateRangeToCompareTo)) : undefined); break; case 'count': result = await customersAnalyticsService.getNewCount(dateRangeFrom ? new Date(Number(dateRangeFrom)) : undefined, dateRangeTo ? new Date(Number(dateRangeTo)) : undefined, dateRangeFromCompareTo ? new Date(Number(dateRangeFromCompareTo)) : undefined, dateRangeToCompareTo ? new Date(Number(dateRangeToCompareTo)) : undefined); break; case 'repeat-customer-rate': result = await customersAnalyticsService.getRepeatCustomerRate(orderStatuses, dateRangeFrom ? new Date(Number(dateRangeFrom)) : undefined, dateRangeTo ? new Date(Number(dateRangeTo)) : undefined, dateRangeFromCompareTo ? new Date(Number(dateRangeFromCompareTo)) : undefined, dateRangeToCompareTo ? new Date(Number(dateRangeToCompareTo)) : undefined); break; case 'retention-customer-rate': result = await customersAnalyticsService.getRetentionRate(orderStatuses, dateRangeFrom ? new Date(Number(dateRangeFrom)) : undefined, dateRangeTo ? new Date(Number(dateRangeTo)) : undefined, dateRangeFromCompareTo ? new Date(Number(dateRangeFromCompareTo)) : undefined, dateRangeToCompareTo ? new Date(Number(dateRangeToCompareTo)) : undefined); break; } res.status(200).json({ analytics: result }); } catch (error) { throw new utils_1.MedusaError(utils_1.MedusaErrorTypes.DB_ERROR, error.message); } }; exports.GET = GET;